package com.softer.wxzj.service;

import com.github.pagehelper.PageInfo;
import com.softer.wxzj.common.entity.CommonResult;
import com.softer.wxzj.common.entity.Page;
import com.softer.wxzj.entity.BaseOwnerInfoMap;
import com.softer.wxzj.entity.SplitMerge;
import com.softer.wxzj.entity.SplitMergeReqList;

import java.util.List;

/**
 * @author Gong Zhiyang
 * @date 2019/5/29
 */
public interface SplitMergeService {

    /**
     * 查询房屋合并/拆分审核列表
     *
     * @param page              分页信息
     * @param splitMergeReqList 查询实体
     *                          regionNo 小区编码
     *                          regionName 小区名称
     *                          createTime 申请开始时间
     *                          updateTime 申请结束时间
     *                          creater 申请人
     * @return 查询结果
     */
    PageInfo<SplitMergeReqList> getSplitMergeAuditList(Page page, SplitMergeReqList splitMergeReqList);

    /**
     * 查询房屋合并/拆分详情
     *
     * @param id req_list的Id
     * @return 查询结果
     */
    SplitMerge getSplitMergeReqInfo(String id);
    /**
     * 房屋合并/拆分审核
     *
     * @param id      审核ID
     * @param opinion 审批意见
     * @param mark    审批通过 audit_pass
     *                审批否决 audit_veto
     *                审批退回 audit_back
     * @return 操作结果
     */
    CommonResult audit(String id, String opinion, String mark);
    /**
     * 房屋合并/拆分
     *
     * @param splitMerge 拆分/合并实体
     * @return 合并/拆分结果
     */
    CommonResult splitMerge(SplitMerge splitMerge);
    /**
     * 模糊查询房屋合并/拆分审变更查询列表
     *
     * @param page  分页信息
     * @param param 模糊查询参数
     * @return 查询结果
     */
    PageInfo<SplitMergeReqList> getSplitMergeAuditListFuzzy(Page page, String param);
    /**
     * 拆分前查询房屋详情
     * @param id 房屋Id
     * @return 详情信息
     */
    BaseOwnerInfoMap getSplitInfo(String id);
    /**
     * 合并前查询房屋详情
     *
     * @param id 合并前房屋ID集合，以“，”分隔
     * @return 详情信息
     */
    List<BaseOwnerInfoMap> getMergeInfo(String id);
    /**
     * 房屋合并/拆分审变更查询列表
     *
     * @param page              分页信息
     * @param splitMergeReqList 查询实体
     *                          regionNo 小区编码
     *                          regionName 小区名称
     *                          createTime 申请开始时间
     *                          updateTime 申请结束时间
     *                          creater 申请人
     * @return 查询结果
     */
    PageInfo<SplitMergeReqList> getSplitMergeList(Page page, SplitMergeReqList splitMergeReqList);
    /**
     * 校验房间是否存在在途业务
     *
     * @param houseId 房间ID
     * @return 业务信息，无在途业务，返回null
     */
    String checkHouseInTrain(String houseId);
}
